package cn.iocoder.yudao.module.hs.service.materiallog;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.hs.controller.admin.materiallog.vo.MaterialLogPageReqVO;
import cn.iocoder.yudao.module.hs.controller.admin.materiallog.vo.MaterialLogSaveReqVO;
import cn.iocoder.yudao.module.hs.dal.dataobject.materiallog.MaterialLogDO;
import cn.iocoder.yudao.module.hs.service.materiallog.bo.MaterialLogSaveReqBO;

import javax.validation.Valid;
import java.util.List;

/**
 * 物料日志 Service 接口
 *
 * @author 航盛
 */
public interface MaterialLogService {

    /**
     * 创建物料日志
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createMaterialLog(@Valid MaterialLogSaveReqVO createReqVO);

    /**
     * 批量创建物料日志
     */
    void batchCreateMaterialLog(Long userId, Integer operateType, List<Long> materialIds, String content);

    /**
     * 创建物料日志
     *
     * @param createReqBO 创建信息
     */
    void createMaterialLog(MaterialLogSaveReqBO createReqBO);

    /**
     * 更新物料日志
     *
     * @param updateReqVO 更新信息
     */
    void updateMaterialLog(@Valid MaterialLogSaveReqVO updateReqVO);

    /**
     * 删除物料日志
     *
     * @param id 编号
     */
    void deleteMaterialLog(Long id);

    /**
     * 获得物料日志
     *
     * @param id 编号
     * @return 物料日志
     */
    MaterialLogDO getMaterialLog(Long id);

    /**
     * 获得物料日志分页
     *
     * @param pageReqVO 分页查询
     * @return 物料日志分页
     */
    PageResult<MaterialLogDO> getMaterialLogPage(MaterialLogPageReqVO pageReqVO);

}
